Databases are computerized information storage and retrieval systems. In computing, databases are sometimes classified according to their organizational approach. The most prevalent approach is the relational database, which is a collection of data items organized as a set of formally-described tables from which data can be accessed or reassembled in many different ways without having to reorganize the database tables. The databases may be stored on direct access storage devices such as magnetic or optical disk drives for semi-permanent storage, or on hard disks connected to a server for direct connection. Computer databases typically contain aggregations of data records or files, such as sales transactions, product catalogs and inventories, and customer profiles.
A database system may be developed by multiple developers, meaning that multiple users may access the database and modify its structure or any one of its objects. However, the simultaneous access of a database by multiple users can give rise to data corruption, that is, the inadvertent over-writing or modification of one user's data by another user. For instance, one user may modify an object of the database and save it, over-writing the modifications of another user. A database integrity scheme is required to avoid data or structure corruption due to simultaneous database modifications by multiple users, in which the multiple users may access and modify the database. In addition, a method is needed for documenting the database modifications done by the users in order to keep track of the modifications, and in order to allow the possibility of restaging the system to one of its former arrangements in case of a faulty modification, otherwise known in the art as the process of “rolling back”.
One approach used today by companies in order to solve the documenting problem is to document the database modifications manually. Using manual documentation enables the users to generate a document for listing all the modifications done in the database. Each change is tagged with its details; specifically, when was the change done, who did the change, and general information about the change, in order to track the changes applied to the database at any given time. However, in order to overcome the problem of contradicting simultaneous modifications, a user must verify that no other user is modifying the same resource at the same time, a task which may be done either by sending an email to every database user in the company or by blocking the database connections entirely to all other users for preventing multiple database access and usage. However, Manual documentation of changes applied to the database is prone to mistakes. Using a manual documentation, in order to rollback a database version, is tedious and complicated. Furthermore, since no management, monitoring or control process is performed over the changes applied to the central database for validating consistency, the central database integrity may be comprised.
Another approach used today for documentation involves documenting the database entities creation script in Microsoft Visual Source Safe, known as MS VSS. Using this approach enables the users to generate a document containing the creation codes of the database entities at a given time. Each change is tagged with its details, mainly, when was the change done and who did the change. The database object entity creation code is managed by MS VSS. However, documenting the database entities creation script in MS VSS requires the user to convert the creation code, which was saved in a file, to a database entity in order to trace database changes. Applying this approach takes considerable conversion time and requires purchase of an additional database migration tool. Furthermore, since the MS VSS does not lock the database entities, parallel modifications can be committed on the same database by different users at the same time, often overriding each other's modifications.
U.S. Pat. No. 6,393,419 discloses a synchronization protocol which allows multiple users to simultaneously access and edit a database while ensuring the integrity of data within the database. A database manager, which may be configured as part of the database software application, keeps track of modifications saved to a database file and increments a modification change counter accordingly. When a user accesses a database record, the database manager detects the modification and changes the counter value accordingly. Then, if that client seeks to save modifications to the database record, the database manager detects the current modification change counter value to discern whether other users have saved modifications to the same record following the access by the user presently seeking to save modifications. If the modification change counter has incremented, the user is denied authorization to save the modifications and the user is offered a choice of alternative operations. Nevertheless, the disclosed method solution is only relevant for users of a shared database during runtime, not developers of a database modifying the database during design-time. Furthermore, the disclosed method only prevents a user from saving his modification after spending time and effort in case of conflicting modifications; it does not prevent multiple users from working on the same record and thus waste time on contradicting modifications which may be rejected.
It is an object of the present invention to provide a system capable of managing the database resource availability during the development stage in a multi user environment.
It is another object of the present invention to provide a system for managing the database resource availability during the development stage where modifications are made to a database object structure or content.
It is still another object of the present invention to provide a system that prevents users from simultaneously modifying the same objects.
It is still another object of the present invention to provide a system that automatically documents database modifications.
It is still another object of the present invention to provide a system which prevents unauthorized users from accessing or modifying database objects.
Other objects and advantages of the invention will become apparent as the description proceeds.